<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body></body>
  <script>
    /* 
      如何使用递归来解决阶乘问题？
      5！ = 4！ ×  5
      4！ = 3！ ×  4
      3！ = 2！ ×  3   
      2！ = 1！ ×  2   
      1   =  1    
          递归的核心思想就是将一个大的问题拆分为一个一个的小问题，小的问题解决了，大的问题也就解决了

          编写递归函数，一定要包含的两个条件
          1.基线条件   - 递归的终止条件
          2.递归条件   - 如何对问题进行拆分
        
        递归的作用和循环是一致的，不同点在于，递归思想比较清晰简介，循环的执行性能比较好
         在开发中，一般的问题都可以通过循环解决，也是尽量去使用循环，少用递归
         只在一些使用循环解决比较麻烦的场景下，才会使用递归
    */
    function jiecheng(num) {
      if (num == 1) {
        return 1;
      }
      return jiecheng(num - 1) * num;
    }
    console.log(jiecheng(5)); // 120
  </script>
</html>
